/*
 * Implementacion de Simbolo de Funciones para la Tabla de Simbolos para el lenguaje C Minus.
 * 
 * Basado en el proyecto descrito en: 
 * Louden, K. (1997). Compiler Construction: Principles and Practice. Boston: PWS.
 * 
 * @ Project: Compiler
 * @ File Name: FuncSymbol.java
 */
package cml.analyzing;

import java.util.ArrayList;

import cml.Type;
import cml.parsing.tree.*;

public class FuncSymbol extends Symbol{
	
	private FuncDeclNode node;
	
	/*
	 * Constructor de la clase.
	 * 
	 * @param	node	nodo registrado en la tabla
	 */
	public FuncSymbol (FuncDeclNode node) {
		
		super(node);
		this.node = node;
	}
	
	/*
	 * Regresa los tipos de dato de los parametros de la funcion
	 * 
	 * @return	lista de los tipos de parametro
	 */
	public ArrayList<Type> getParamsType() {
		
		ParamNode params = (ParamNode)this.node.getChild(this.node.PARAMS);
		
		if(params == null) 
			return null;
		
		ArrayList<Type> paramsType = new ArrayList<Type>();
		
		while(params != null) {
			
			TypeNode type = (TypeNode)params.getChild(params.TYPE);
			paramsType.add(type.getType());
			
			params = (ParamNode)params.getSibling();
		}
		
		return paramsType;
	}
}
